home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / Dev / Oberon / source / amiga / NonVolatile.mod < prev    next >
Text File  |  1995-06-29  |  4KB  |  168 lines

  1. (*************************************************************************
  2.  
  3.      $RCSfile: NonVolatile.mod $
  4.   Description: Interface to nonvolatile.library
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 3.7 $
  8.       $Author: fjc $
  9.         $Date: 1995/06/04 23:13:14 $
  10.  
  11.   Includes Release 40.15
  12.  
  13.   (C) Copyright 1990-1993 Commodore-Amiga, Inc.
  14.       All Rights Reserved
  15.  
  16.   Oberon-A Interface Copyright © 1994-1995, Frank Copeland.
  17.   This file is part of the Oberon-A Interface.
  18.   See Oberon-A.doc for conditions of use and distribution.
  19.  
  20. *************************************************************************)
  21.  
  22. <* STANDARD- *>
  23.  
  24. MODULE [2] NonVolatile;
  25.  
  26. IMPORT SYS := SYSTEM, Kernel, e := Exec, s := Sets;
  27.  
  28. (*
  29. **      $VER: nonvolatile.h 40.8 (30.7.93)
  30. **
  31. **      nonvolatile.library interface structures and defintions.
  32. *)
  33.  
  34.  
  35. (*****************************************************************************)
  36.  
  37. TYPE
  38.  
  39.   NVInfoPtr * = POINTER TO NVInfo;
  40.   NVInfo * = RECORD
  41.     maxStorage * :  e.ULONG;
  42.     freeStorage * :  e.ULONG;
  43.   END;
  44.  
  45.  
  46. (*****************************************************************************)
  47.  
  48. TYPE
  49.  
  50.   EntryPtr * = POINTER TO Entry;
  51.   Entry * = RECORD (e.MinNodeBase)
  52.     minNode *    : e.MinNode;
  53.     name *       : e.LSTRPTR;
  54.     size       * : e.ULONG;
  55.     protection * : e.ULONG;
  56.   END;
  57.  
  58. CONST
  59.  
  60. (* bit definitions for mask in SetNVProtection().  Also used for
  61.  * NVEntry.nve_Protection.
  62.  *)
  63.   delete * = 0;
  64.   appName * = 31;
  65.  
  66.  
  67. (*****************************************************************************)
  68.  
  69. CONST
  70.  
  71. (* errors from StoreNV() *)
  72.   errBadName * = 1;
  73.   errWriteProt * = 2;
  74.   errFail * = 3;
  75.   errFatal * = 4;
  76.  
  77. TYPE
  78.   DataPtr * = POINTER TO Data;
  79.   Data * = RECORD END;
  80.  
  81.  
  82. (*-- Library Base variable --------------------------------------------*)
  83.  
  84. CONST
  85.  
  86.   nonvolatileName * = "nonvolatile.library";
  87.  
  88. VAR
  89.  
  90.   base* : e.LibraryPtr;
  91.  
  92.  
  93. (*-- Library Functions ------------------------------------------------*)
  94.  
  95. (*
  96. **      $VER: nonvolatile_protos.h 40.5 (30.7.93)
  97. *)
  98.  
  99. (*--- functions in V40 or higher (Release 3.1) ---*)
  100.  
  101. PROCEDURE GetCopyNV* [base,-30]
  102.   ( appName        [8] : ARRAY OF CHAR;
  103.     itemName       [9] : ARRAY OF CHAR;
  104.     killRequesters [1] : e.LONGBOOL )
  105.   : DataPtr;
  106.  
  107. PROCEDURE FreeNVData* [base,-36]
  108.   ( data [8] : DataPtr );
  109.  
  110. PROCEDURE StoreNV* [base,-42]
  111.   ( appName        [8] : ARRAY OF CHAR;
  112.     itemName       [9] : ARRAY OF CHAR;
  113.     data          [10] : DataPtr;
  114.     length         [0] : e.ULONG;
  115.     killRequesters [1] : e.LONGBOOL )
  116.   : e.UWORD;
  117.  
  118. PROCEDURE DeleteNV* [base,-48]
  119.   ( appName        [8] : ARRAY OF CHAR;
  120.     itemName       [9] : ARRAY OF CHAR;
  121.     killRequesters [1] : e.LONGBOOL )
  122.   : BOOLEAN;
  123.  
  124. PROCEDURE GetNVInfo* [base,-54]
  125.   ( killRequesters [1] : e.LONGBOOL )
  126.   : NVInfoPtr;
  127.  
  128. PROCEDURE GetNVList* [base,-60]
  129.   ( appName        [8] : ARRAY OF CHAR;
  130.     killRequesters [1] : e.LONGBOOL )
  131.   : e.MinListPtr;
  132.  
  133. PROCEDURE SetNVProtection* [base,-66]
  134.   ( appName        [8] : ARRAY OF CHAR;
  135.     itemName       [9] : ARRAY OF CHAR;
  136.     mask           [2] : s.SET32;
  137.     killRequesters [1] : e.LONGBOOL )
  138.   : BOOLEAN;
  139.  
  140.  
  141. (* determine the size of data returned by this library *)
  142. (* #define SizeNVData(DataPtr) ((((ULONG * ) DataPtr)[-1]) - 4) *)
  143.  
  144. (*------------------------------------*)
  145. PROCEDURE [0] SizeNVData (data : DataPtr) : e.ULONG;
  146.   VAR size : LONGINT;
  147. BEGIN (* SizeNVData *)
  148.   SYS.GET (SYS.VAL (LONGINT, data) - 4, size);
  149.   RETURN size - 4
  150. END SizeNVData;
  151.  
  152.  
  153. (*-- Library Base variable --------------------------------------------*)
  154.  
  155. <*$LongVars-*>
  156.  
  157. (*-----------------------------------*)
  158. PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
  159.  
  160. BEGIN (* CloseLib *)
  161.   IF base # NIL THEN e.CloseLibrary (base) END
  162. END CloseLib;
  163.  
  164. BEGIN
  165.   base := e.OpenLibrary (nonvolatileName, e.libraryMinimum);
  166.   IF base # NIL THEN Kernel.SetCleanup (CloseLib) END
  167. END NonVolatile.
  168.